The present invention is related to networked computer systems, and more particularly to a nonlinear system and method of aging packets traveling through a packet switching network.
Communication latency is a common concern in packet switching networks. Steps are taken to reduce the average latency for network traffic. At the same time, care must be taken to limit the maximum latency faced by a packet in the network. Age-based arbitration has been used to limit the length of time that packets are in transit within the network. In one such approach, each header packet includes an age field. The contents of the age field are increased by a constant at each transfer point in the system (e.g., each node or each router).
In one such approach, such as was used in the Origin 2000 system manufactured by Silicon Graphics Inc. of Mountain View, Calif., a packet is assigned an age value of zero when it gets injected into the network. At predetermined intervals, the age field is incremented by a constant. (In the Origin 2000, each router had a register that could be programmed with a constant aging increment (e.g., 100 clocks or 1000 clocks).) Preferential routing is given to the oldest packets, so that they propagate to their destination.
Such an approach works well for most instances. Packets in the network get injected into the network with a value of zero and increment in a consistent fashion as they pass through the network. As the network size increases and as the number of packets active in the network increase, however, such an approach tends to result in large numbers of packets with similar ages. What is needed is a system and method of age-based arbitration which enables one to differentiate more easily between packets within the network.
According to one aspect of the present invention, in a multiprocessor system having a plurality of nodes connected to a network, wherein communication between the plurality of nodes is in the form of packets, a system and method of aging packets is described. A packet having an age value is built and transmitted through the network. The age value is increased at predetermined intervals, wherein increasing includes determining a current age of the packet and changing the interval as a function of the current age.
According to another aspect of the present invention, in a multiprocessor system having a plurality of nodes connected by a network, wherein communication between the plurality of nodes is in the form of packets routed through a router, wherein the router includes a plurality of ports, a system and method of routing packets through the plurality of ports. Packets are built. Each packet has an age value and the age value is set to a constant. A value is added to the age value at predetermined intervals, wherein adding a value to the aging value includes determining a current age of the packet and changing the interval as a function of the current age. Packets are queued in the router and are transmitted according to a priority which examines the age value of queued packets to determine an oldest packet and routes the oldest packet to a port.
According to yet another aspect of the present invention, in a multiprocessor system having a plurality of nodes connected by a network, wherein communication between the plurality of nodes is in the form of packets routed through a router, wherein the router includes a plurality of input ports and a plurality of output ports, a system and method of routing packets through the plurality of output ports is described. Packets are received at each of the plurality of input ports. Each packet has an age value and a value is added to the age value at predetermined intervals. One or more of the packets is transmitted to output ports, wherein transmitting includes examining the age value of packets to determine an oldest packet and routing the oldest packet through one of the plurality of output ports. In determining the packet to be transferred, if a packet arriving through a first input port and a packet arriving through a second input port have equivalent ages, the packet to be routed is determined as a function of the port through which it arrived, wherein determining the packet to be routed as a function of the port through which it arrived includes applying a rotating priority to each port.
According to yet another aspect of the present invention, in a multiprocessor system having a plurality of nodes connected by a network, wherein the plurality of nodes includes a first node and a second node, wherein each node includes a response age register and a plurality of ports connected to a network, wherein the response age register includes a response age value, wherein communication between the plurality of nodes is in the form of packets, wherein each packet has a source node field, a destination node field and an age field and wherein each age field contains an aging value, a system and method of routing packets through the plurality of ports is described. A request packet is generated at the first node, wherein generating includes loading a first node identifier representative of the first node in the source node field; loading a second node identifier representative of the second node in the destination node field and setting the aging value to a constant. A value is added to the aging value at predetermined intervals. The request packet is routed through a plurality of nodes to the second node, wherein routing includes resolving port conflicts through age-based arbitration. A response packet is generated, wherein generating includes loading a first node identifier representative of the first node in the destination node field; loading a second node identifier representative of the second node in the source node field and setting the aging value to the response age value stored in the second node""s response age register.